#pragma once

#include <memory>
#include <sstream>
#include "Logger.h"
#include "LogEvent.h"

namespace log
{

class LogEventImp
{
public:
    using ptr = std::shared_ptr<LogEventImp>;

    LogEventImp(Logger::ptr ptrLogger, LogLevel::ELevel eLevel, uint32_t tid, const std::string& strTime
            , const std::string& strFile, const std::string& strFunc, uint32_t nLine);
    ~LogEventImp();
    std::ostringstream& stream();
    void format(const char* fmt, ...);
    
private:
    Logger::ptr m_ptrLogger;
    LogEvent::ptr m_ptrEvent;
};
 
    
} // namespace log
